package com.bibi.hanshunping.clouse04;

// char int long float double
// byte short int long float double
// 53 自动转换的细节1
public class AutoConvertDetail {
    public static void main(String[] args) {

        // 多种类型混合计算，系统首先自动将所有数据转换成容量最大的那种数据类型，然后再进行计算
        int n1 = 10;
        // float d1 = n1  + 1.1; // double 无法转 float
        // 以下两种方式都可行
        double d1 = n1 + 1.1;
        float d2 = n1 + 1.1F;

        // 当把精度大的类型赋值给小的数据类型时，报错，反之可以
        // int n2 = 1.1;

        // byte,short 和 char 直接复制是可以的，变量不能相互自动转换（范围内是可以的）
        // byte short char 参与运算时，会先转换成int类型
        byte b = 'z';
        // byte b2 = 1000;
        char c = 100;
        char c2 = 1000;
        // c = b;
        // char c3 = b;
        System.out.println(b);
        System.out.println(c); // java: 不兼容的类型: 从byte转换到char可能会有损失
        System.out.println(c2);

        // boolean 不参与类型自动转换
        // 自动提升原则：表达式结果的类型自动提升为，最大的容量的类型
        byte b2 = 10;
        short s2 = 1;
        // short s3 = b2 + s2; // 结果会转成int类型

        boolean bass = true;
        // int nu10 = pass;
    }

}
